package com.zb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zb.entity.SelectVo;
import com.zb.entity.ZjUserContact;
import com.zb.vo.UserContactSelectResultVo;
import com.zb.vo.UserContactVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 用户联系人表 Mapper 接口
 * </p>
 *
 * @author WEN
 * @since 2023-08-08
 */
public interface ZjUserContactMapper extends BaseMapper<ZjUserContact> {

    /**
     * 根据用户ID批量删除联系人
     * @param userIdList 用户ID集合
     * @return
     */
    int deleteBatchByUserIds(@Param("userIdList") List<Long> userIdList);

    /**
     * 查询主联系人名称
     * @param idList 联系人ID集合
     * @return
     */
    ZjUserContact existMainContaceByIds(@Param("idList") List<Long> idList);

    /**
     * 查询联系人手机号是否重复
     * @param userId 用户ID
     * @param id 联系人ID
     * @param phone 联系人手机号
     * @return
     */
    Integer existByPhone(@Param("userId") Long userId, @Param("id") Long id, @Param("phone") String phone);

    /**
     * 根据ID查询是否为主联系人
     * @param id 联系人ID
     * @return
     */
    Integer existMainContaceById(Long id);

    /**
     * 根据用户ID获取主联系人
     * @param userId 用户ID
     * @return
     */
    ZjUserContact getMainContactByUserId(Long userId);

    /**
     * 分页获取用户联系人下拉数据列表
     * @param userId 用户ID
     * @param selectVo 搜索条件
     * @return
     */
    List<UserContactSelectResultVo> pageContactSelect(@Param("userId") Long userId, @Param("selectVo") SelectVo selectVo);

    /**
     * 分页获取用户联系人下拉数据总记录数
     * @param userId 用户ID
     * @param selectVo 搜索条件
     * @return
     */
    long pageContactSelectCount(@Param("userId") Long userId, @Param("selectVo") SelectVo selectVo);

    /**
     * 分页获取客户下拉数据，带出所有联系人及对应的账号
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    List<ZjUserContact> pageUserSelect(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 分页获取客户下拉数据，带出所有联系人及对应的账号总记录数
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    long pageUserSelectCount(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);
}
